home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Demos
/
Evatac Software
/
Preditor 3.0
/
Tools
/
Extension Module Builder
/
PreditorExtension.h
< prev
next >
Wrap
Text File
|
1995-12-14
|
35KB
|
979 lines
/************************************************************
PreditorExtension.h
Interface file for Preditor extension modules
© Copyright Evatac Software 1988-1995
All rights reserved
************************************************************
Here are all of the entry points and their API accessible
via Preditor Extensions. To call an entry point from the
extension, do:
ext<entrypoint>(callbacks, <parameters>)
Your definition of 'main' should look like this:
void main(
ExternalCallbackBlock *callbacks,
WindowRef window
);
••• API Summary •••
Activate GetProjectFiles NewDocument
Copy GetSelection NotifyUndo
Delete GetText OpenDocument
DisplayDialog GetTopLineNum Paste
DisplaySelection IndexEntry PeekScanCharacter
DoneProgress Insert PushClipboard
DoneScan IsWordBreak ReportOSError
DoProgress LineCount ScanContents
FindText LineEnd SetPreferences
FindMatch LineFromPosition SetSelection
GetDocumentModDate LineOffset SetTopLineNum
GetDocumentSpec LineRange StartProgress
GetFiles LineToPosition TokenReturn
GetFileText Lock WordSelect
GetFolder NextVisiblePosition
GetLeading NextScanCharacter
GetPreferences
••• Begin API Prototypes •••
long extGetVersion(void);
void GetSelection(
long *selAnchor,
long *selEnd
);
void SetSelection(
long selAnchor,
long selEnd
);
void DisplaySelection(void);
void Insert(
Char *text,
long length
);
void Delete(void);
Handle Copy(void);
void Paste(
Handle handle
);
void PushClipboard(
Handle handle
);
void GetText(
long anchor,
long end,
Char *text,
long *maxLength
);
void Lock(
Boolean lockText
);
long LineCount(void);
long CharacterCount(void);
long LineFromPosition(
long position
);
long LineToPosition(
long line
);
long LineEnd(
long line
);
void LineRange(
long lineNumber,
long *startLineNumber,
long *endLineNumber
);
long LineOffset(
long position
);
long NextVisiblePosition(
long position,
Boolean next
);
long GetTopLineNum(void);
void SetTopLineNum(
long lineNumber
);
long GetLeading(
long lineNumber,
long *length,
short *spacesPerTab,
short *hardTab
);
Boolean IsWordBreak(
Char ch
);
void WordSelect(
Boolean next,
Boolean select,
Boolean extend
);
void ScanContents(
long startPosition
);
Boolean NextScanCharacter(
Char *ch
);
Boolean PeekScanCharacter(
Char *ch
);
void DoneScan(void);
WindowRef NewDocument(
long documentType
(kEdit, kScript, kBrowser, kIndex, kIndexDouble)
);
WindowRef OpenDocument(
FSSpec *fileSpec
);
void Activate(
WindowRef document
);
Boolean GetFolder(
FSSpec *folderSpec
);
Boolean GetFiles(
FSSpec **specArray,
long *count,
Boolean sort
);
Boolean GetProjectFiles(
FSSpec **specArray,
long *count,
Boolean textOnly
);
Handle GetFileText(
FSSpec *fileSpec
);
Boolean GetDocumentSpec(
WindowRef windowRef,
FSSpec *fileSpec
);
long GetDocumentModDate(
WindowRef windowRef
);
long FindText(
Char *target,
long targetLength,
long position,
Char *result,
long *resultLength
Boolean caseSensitive,
Boolean pattern
);
long FindMatch(
Char *bracket,
long position
);
Boolean IndexEntry(
Char *name,
Boolean minor,
short operation
);
void DisplayDialog(
short dialogId,
extHandleProc handler,
void *data,
short *itemHit
);
void StartProgress(
Char *text,
long total,
Boolean canCancel
);
Boolean DoProgress(
long doneThusFar
);
void DoneProgress(void);
void NotifyUndo(
Char *undoActionName
);
void GetPreferences(
ResType type,
void *buffer,
long *length
);
void SetPreferences(
ResType type,
void *buffer,
long *length
);
void ReportOSError(
short errorCode
);
void TokenReturn(
languageToken *token
);
************************************************************/
#ifndef __PREDITOREXTENSION__
#define __PREDITOREXTENSION__
#include <Dialogs.h>
#include <Files.h>
#include <Windows.h>
#ifdef THINKC
typedef WindowPtr WindowRef;
typedef DialogPtr DialogRef;
#else
#include <MixedMode.h>
#endif
#if defined(powerc) || defined (__powerc)
#pragma options align=mac68k
#endif
/*
* * * * * * * * * CONSTANTS AND MACRO DEFINITIONS * * * * * * * * * *
*/
#define kPreditorExtensionVersion 1 /* Current version */
enum {
kEdit = 'docu',
kScript = 'scpt',
kBrowser = 'Pbrw',
kIndex = 'Pidx',
kIndexDouble = 'Pid2'
};
/* Values for 'message' parameter to dialog handler callback proc */
enum {
kDlgInit = 0,
kDlgUpdate,
kDlgIdle,
kDlgClose,
kDlgClick,
kDlgItemHit,
kDlgKey
};
/* Values for 'operation' parameter to IndexEntry() */
enum {
kAddEntry,
kDeleteEntry,
kSelectEntry
};
/*
* * * * * * * * * TYPE AND STRUCTURE DEFINITIONS * * * * * * * * * *
*/
typedef char Int8;
typedef short Int16;
typedef long Int32;
typedef unsigned char Char;
typedef struct ExternalCallbackBlock ExternalCallbackBlock;
typedef short (*extHandlerProc)(
DialogRef dialog,
short message,
short itemHit,
void *data
);
#if GENERATINGCFM
typedef UniversalProcPtr extHandlerUPP;
enum {
ExtensionUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ExternalCallbackBlock *)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(WindowRef))),
GetSelectionUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long *))) \
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long *))),
SetSelectionUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))) \
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
DisplaySelectionUPPInfo = kCStackBased,
InsertUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Char *)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
DeleteUPPInfo = kCStackBased,
CopyUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Handle))),
PasteUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Handle))),
PushClipboardUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Handle))),
GetTextUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Char *)))
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long *))),
LockUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Boolean))),
LineCountUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(long))),
CharacterCountUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(long))),
LineFromPositionUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))),
LineToPositionUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))),
LineEndUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))),
LineRangeUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long *)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long *))),
LineOffsetUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))),
NextVisiblePositionUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Boolean))),
GetTopLineNumUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(long))),
SetTopLineNumUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))),
GetLeadingUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long *)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short *)))
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short *))),
IsWordBreakUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Char))),
WordSelectUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Boolean))),
ScanContentsUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))),
NextScanCharacterUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Char))),
PeekScanCharacterUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Char))),
DoneScanUPPInfo = kCStackBased,
NewDocumentUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(WindowRef)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))),
OpenDocumentUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(WindowRef)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec *))),
ActivateUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowRef))),
GetFolderUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec *))),
GetFilesUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec **)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long *)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Boolean))),
GetProjectFilesUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec **)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long *)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Boolean))),
GetFileTextUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Handle)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(FSSpec *))),
GetDocumentSpecUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowRef)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(FSSpec *))),
GetDocumentModDateUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowRef))),
FindTextUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Char *)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Char *)))
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long *)))
| STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(Boolean))),
FindMatchUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Char *)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
IndexEntryUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(extHandlerUPP)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void *))),
DisplayDialogUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Char *)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short))),
DialogHandlerUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(short)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DialogRef)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void *))),
StartProgressUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Char *)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Boolean))),
DoProgressUPPInfo = kCStackBased
| RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))),
DoneProgressUPPInfo = kCStackBased,
NotifyUndoUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Char *))),
GetPreferencesUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ResType)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void *)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long *))),
SetPreferencesUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ResType)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void *)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long *))),
ReportOSErrorUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short))),
TokenReturnUPPInfo = kCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long *)))
};
typedef UniversalProcPtr GetSelectionUPP;
typedef UniversalProcPtr SetSelectionUPP;
typedef UniversalProcPtr DisplaySelectionUPP;
typedef UniversalProcPtr InsertUPP;
typedef UniversalProcPtr DeleteUPP;
typedef UniversalProcPtr CopyUPP;
typedef UniversalProcPtr PasteUPP;
typedef UniversalProcPtr PushClipboardUPP;
typedef UniversalProcPtr GetTextUPP;
typedef UniversalProcPtr LockUPP;
typedef UniversalProcPtr LineCountUPP;
typedef UniversalProcPtr CharacterCountUPP;
typedef UniversalProcPtr LineFromPositionUPP;
typedef UniversalProcPtr LineToPositionUPP;
typedef UniversalProcPtr LineEndUPP;
typedef UniversalProcPtr LineRangeUPP;
typedef UniversalProcPtr LineOffsetUPP;
typedef UniversalProcPtr NextVisiblePositionUPP;
typedef UniversalProcPtr GetTopLineNumUPP;
typedef UniversalProcPtr SetTopLineNumUPP;
typedef UniversalProcPtr GetLeadingUPP;
typedef UniversalProcPtr IsWordBreakUPP;
typedef UniversalProcPtr WordSelectUPP;
typedef UniversalProcPtr ScanContentsUPP;
typedef UniversalProcPtr NextScanCharacterUPP;
typedef UniversalProcPtr PeekScanCharacterUPP;
typedef UniversalProcPtr DoneScanUPP;
typedef UniversalProcPtr NewDocumentUPP;
typedef UniversalProcPtr OpenDocumentUPP;
typedef UniversalProcPtr ActivateUPP;
typedef UniversalProcPtr GetFolderUPP;
typedef UniversalProcPtr GetFilesUPP;
typedef UniversalProcPtr GetProjectFilesUPP;
typedef UniversalProcPtr GetFileTextUPP;
typedef UniversalProcPtr GetDocumentSpecUPP;
typedef UniversalProcPtr GetDocumentModDateUPP;
typedef UniversalProcPtr ReportOSErrorUPP;
typedef UniversalProcPtr GetPreferencesUPP;
typedef UniversalProcPtr SetPreferencesUPP;
typedef UniversalProcPtr FindTextUPP;
typedef UniversalProcPtr FindMatchUPP;
typedef UniversalProcPtr IndexEntryUPP;
typedef UniversalProcPtr DisplayDialogUPP;
typedef UniversalProcPtr StartProgressUPP;
typedef UniversalProcPtr DoProgressUPP;
typedef UniversalProcPtr DoneProgressUPP;
typedef UniversalProcPtr NotifyUndoUPP;
typedef UniversalProcPtr TokenReturnUPP;
#define extGetSelection(callbacks, selAnchor, selEnd) \
CallUniversalProc((UniversalProcPtr)((callbacks)->GetSelection), GetSelectionUPPInfo, (selAnchor), (selEnd))
#define extSetSelection(callbacks, selAnchor, selEnd) \
CallUniversalProc((UniversalProcPtr)((callbacks)->SetSelection), SetSelectionUPPInfo, (selAnchor), (selEnd))
#define extDisplaySelection(callbacks) \
CallUniversalProc((UniversalProcPtr)((callbacks)->DisplaySelection), DisplaySelectionUPPInfo)
#define extInsert(callbacks, text, length) \
CallUniversalProc((UniversalProcPtr)((callbacks)->Insert), InsertUPPInfo, (text), (length))
#define extDelete(callbacks) \
CallUniversalProc((UniversalProcPtr)((callbacks)->Delete), DeleteUPPInfo)
#define extCopy(callbacks) \
(Handle) CallUniversalProc((UniversalProcPtr)((callbacks)->Copy), CopyUPPInfo)
#define extPaste(callbacks, hdl) \
CallUniversalProc((UniversalProcPtr)((callbacks)->Paste), PasteUPPInfo, (hdl))
#define extPushClipboard(callbacks, hdl) \
CallUniversalProc((UniversalProcPtr)((callbacks)->PushClipboard), PushClipboardUPPInfo, (hdl))
#define extGetText(callbacks, anchor, end, text, length) \
CallUniversalProc((UniversalProcPtr)((callbacks)->GetText), GetTextUPPInfo, (anchor), (end), (text), (length))
#define extLock(callbacks, hdl) \
CallUniversalProc((UniversalProcPtr)((callbacks)->Lock), LockUPPInfo, (hdl))
#define extLineCount(callbacks) \
(long) CallUniversalProc((UniversalProcPtr)((callbacks)->LineCount), LineCountUPPInfo)
#define extCharacterCount(callbacks) \
(long) CallUniversalProc((UniversalProcPtr)((callbacks)->CharacterCount), CharacterCountUPPInfo)
#define extLineFromPosition(callbacks, position) \
(long) CallUniversalProc((UniversalProcPtr)((callbacks)->LineFromPosition), LineFromPositionUPPInfo, (position))
#define extLineToPosition(callbacks, line) \
(long) CallUniversalProc((UniversalProcPtr)((callbacks)->LineToPosition), LineToPositionUPPInfo, (line))
#define extLineEnd(callbacks, line) \
(long) CallUniversalProc((UniversalProcPtr)((callbacks)->LineEnd), LineEndUPPInfo, (line))
#define extLineRange(callbacks, line, start, end) \
CallUniversalProc((UniversalProcPtr)((callbacks)->LineRange), LineRangeUPPInfo, (line), (start), (end))
#define extLineOffset(callbacks, pos) \
(long) CallUniversalProc((UniversalProcPtr)((callbacks)->LineOffset), LineOffsetUPPInfo, (pos))
#define extNextVisiblePosition(callbacks, pos, next) \
(long) CallUniversalProc((UniversalProcPtr)((callbacks)->NextVisiblePosition), NextVisiblePositionUPPInfo, (pos), (next))
#define extGetTopLineNum(callbacks) \
(long) CallUniversalProc((UniversalProcPtr)((callbacks)->GetTopLineNum), GetTopLineNumUPPInfo)
#define extSetTopLineNum(callbacks, line) \
CallUniversalProc((UniversalProcPtr)((callbacks)->SetTopLineNum), SetTopLineNumUPPInfo, (line))
#define extGetLeading(callbacks, line, length, tab, hardTab) \
CallUniversalProc((UniversalProcPtr)((callbacks)->GetLeading), GetLeadingUPPInfo, (line), (length), (tab), (hardTab))
#define extIsWordBreak(callbacks, ch) \
(Boolean) CallUniversalProc((UniversalProcPtr)((callbacks)->IsWordBreak), IsWordBreakUPPInfo, (ch))
#define extWordSelect(callbacks, next, select, extend) \
CallUniversalProc((UniversalProcPtr)((callbacks)->WordSelect), WordSelectUPPInfo, (next), (select), (extend))
#define extScanContents(callbacks, pos) \
CallUniversalProc((UniversalProcPtr)((callbacks)->ScanContents), ScanContentsUPPInfo, (pos))
#define extNextScanCharacter(callbacks, ch) \
(Boolean) CallUniversalProc((UniversalProcPtr)((callbacks)->NextScanCharacter), NextScanCharacterUPPInfo, (ch))
#define extPeekScanCharacter(callbacks, ch) \
(Boolean) CallUniversalProc((UniversalProcPtr)((callbacks)->PeekScanCharacter), PeekScanCharacterUPPInfo, (ch))
#define extDoneScan(callbacks) \
CallUniversalProc((UniversalProcPtr)((callbacks)->DoneScan), DoneScanUPPInfo)
#define extNewDocument(callbacks, type) \
(WindowRef) CallUniversalProc((UniversalProcPtr)((callbacks)->NewDocument), NewDocumentUPPInfo, (type))
#define extOpenDocument(callbacks, fileSpec) \
(WindowRef) CallUniversalProc((UniversalProcPtr)((callbacks)->OpenDocument), OpenDocumentUPPInfo, (fileSpec))
#define extActivate(callbacks, doc) \
(WindowRef) CallUniversalProc((UniversalProcPtr)((callbacks)->Activate), ActivateUPPInfo, (doc))
#define extGetFolder(callbacks, fileSpec) \
(Boolean) CallUniversalProc((UniversalProcPtr)((callbacks)->GetFolder), GetFolderUPPInfo, (fileSpec))
#define extGetFiles(callbacks, specArray, count, sort) \
(Boolean) CallUniversalProc((UniversalProcPtr)((callbacks)->GetFiles), GetFilesUPPInfo, (specArray), (count), (sort))
#define extGetProjectFiles(callbacks, specArray, count, textOnly) \
(Boolean) CallUniversalProc((UniversalProcPtr)((callbacks)->GetProjectFiles), GetProjectFilesUPPInfo, (specArray), (count), (textOnly))
#define extGetFileText(callbacks, fileSpec) \
(Handle) CallUniversalProc((UniversalProcPtr)((callbacks)->GetFileText), GetFileTextUPPInfo, (fileSpec))
#define extGetDocumentSpec(callbacks, window, fileSpec) \
(Boolean) CallUniversalProc((UniversalProcPtr)((callbacks)->GetDocumentSpec), GetDocumentSpecUPPInfo, (window), (fileSpec))
#define extGetDocumentModDate(callbacks, window) \
(long) CallUniversalProc((UniversalProcPtr)((callbacks)->GetDocumentModDate), GetDocumentModDateUPPInfo, (window))
#define extReportOSError(callbacks, code) \
CallUniversalProc((UniversalProcPtr)((callbacks)->ReportOSError), ReportOSErrorUPPInfo, (code))
#define extFindText(callbacks, target, tlen, pos, result, resultLen, sens, pat) \
(long) CallUniversalProc((UniversalProcPtr)((callbacks)->FindText), FindTextUPPInfo, (target), (tlen), (pos), (result), (resultLen), (sens), (pat))
#define extFindMatch(callbacks, bracket, pos) \
(long) CallUniversalProc((UniversalProcPtr)((callbacks)->FindMatch), FindMatchUPPInfo, (bracket), (pos))
#define extStartProgress(callbacks, text, total, canCancel) \
CallUniversalProc((UniversalProcPtr)((callbacks)->StartProgress), StartProgressUPPInfo, (text), (total), (canCancel))
#define extDoProgress(callbacks, thusFar) \
(Boolean) CallUniversalProc((UniversalProcPtr)((callbacks)->DoProgress), DoProgressUPPInfo, (thusFar))
#define extDoneProgress(callbacks) \
CallUniversalProc((UniversalProcPtr)((callbacks)->DoneProgress), DoneProgressUPPInfo)
#define extNotifyUndo(callbacks, name) \
CallUniversalProc((UniversalProcPtr)((callbacks)->NotifyUndo), NotifyUndoUPPInfo, (name))
#define extGetPreferences(callbacks, type, buffer, length) \
CallUniversalProc((UniversalProcPtr)((callbacks)->GetPreferences), GetPreferencesUPPInfo, (type), (buffer), (length))
#define extSetPreferences(callbacks, type, buffer, length) \
CallUniversalProc((UniversalProcPtr)((callbacks)->SetPreferences), SetPreferencesUPPInfo, (type), (buffer), (length))
#define extIndexEntry(callbacks, name, minor, op) \
(Boolean) CallUniversalProc((UniversalProcPtr)((callbacks)->IndexEntry), IndexEntryUPPInfo, (name), (minor), (op))
#define extDisplayDialog(callbacks, id, handler, data, itemHit) { \
extHandlerUPP upp = (extHandlerUPP) NewRoutineDescriptor((ProcPtr) (handler), DialogHandlerUPPInfo, GetCurrentArchitecture()); \
*itemHit = (short) CallUniversalProc((UniversalProcPtr)((callbacks)->DisplayDialog), DisplayDialogUPPInfo, (id), (upp), (data)); \
DisposeRoutineDescriptor(upp); \
}
#define extTokenReturn(callbacks, token) \
CallUniversalProc((UniversalProcPtr)((callbacks)->TokenReturn), TokenReturnUPPInfo, (token))
#else
typedef extHandlerProc extHandlerUPP;
typedef void (*GetSelectionProc) (long *selAnchor, long *selEnd);
typedef void (*SetSelectionProc) (long selAnchor, long selEnd);
typedef void (*DisplaySelectionProc) (void);
typedef void (*InsertProc) (Char *text, long length);
typedef void (*DeleteProc) (void);
typedef Handle (*CopyProc) (void);
typedef void (*PasteProc) (Handle hdl);
typedef void (*PushClipboardProc) (Handle hdl);
typedef void (*GetTextProc) (long anchor, long end, Char *text, long *maxLength);
typedef void (*LockProc) (Boolean lockText);
typedef long (*LineCountProc) (void);
typedef long (*CharacterCountProc) (void);
typedef long (*LineFromPositionProc) (long position);
typedef long (*LineToPositionProc) (long line);
typedef long (*LineEndProc) (long line);
typedef void (*LineRangeProc) (long lineNumber, long *startLineNumber, long *endLineNumber);
typedef long (*LineOffsetProc) (long position);
typedef long (*NextVisiblePositionProc)(long position, Boolean next);
typedef long (*GetTopLineNumProc) (void);
typedef void (*SetTopLineNumProc) (long topLineNum);
typedef long (*GetLeadingProc) (long line, long *length, short *spacePerTab, short *hardTab);
typedef Boolean (*IsWordBreakProc) (Char ch);
typedef void (*WordSelectProc) (Boolean next, Boolean select, Boolean extend);
typedef void (*ScanContentsProc) (long startPosition);
typedef Boolean (*NextScanCharacterProc)(Char *ch);
typedef Boolean (*PeekScanCharacterProc)(Char *ch);
typedef void (*DoneScanProc) (void);
typedef WindowRef (*NewDocumentProc) (long type);
typedef WindowRef (*OpenDocumentProc) (FSSpec *fileSpec);
typedef void (*ActivateProc) (WindowRef document);
typedef Boolean (*GetFolderProc) (FSSpec *folderSpec);
typedef Boolean (*GetFilesProc) (FSSpec **specArray, long *count, Boolean sort);
typedef Boolean (*GetProjectFilesProc) (FSSpec **specArray, long *count, Boolean textOnly);
typedef Handle (*GetFileTextProc) (FSSpec *fileSpec);
typedef Boolean (*GetDocumentSpecProc) (WindowRef window, FSSpec *fileSpec);
typedef long (*GetDocumentModDateProc) (WindowRef window);
typedef void (*ReportOSErrorProc) (short errorCode);
typedef long (*FindTextProc) (Char *target, long targetLen, long position, Char *result, long *resultLen, Boolean sens, Boolean pat);
typedef long (*FindMatchProc) (Char *bracket, long position);
typedef Boolean (*IndexEntryProc) (Char *name, Boolean minor, short op);
typedef short (*DisplayDialogProc) (short id, extHandlerUPP handler, void *data);
typedef void (*StartProgressProc) (Char *text, long total, Boolean canCancel);
typedef Boolean (*DoProgressProc) (long totalThusFar);
typedef void (*DoneProgressProc) (void);
typedef void (*NotifyUndoProc) (Char *undoActioName);
typedef void (*GetPreferencesProc) (ResType type, void *buffer, long *length);
typedef void (*SetPreferencesProc) (ResType type, void *buffer, long *length);
typedef void (*TokenReturnProc) (void *token);
typedef GetSelectionProc GetSelectionUPP;
typedef SetSelectionProc SetSelectionUPP;
typedef DisplaySelectionProc DisplaySelectionUPP;
typedef InsertProc InsertUPP;
typedef DeleteProc DeleteUPP;
typedef CopyProc CopyUPP;
typedef PasteProc PasteUPP;
typedef PushClipboardProc PushClipboardUPP;
typedef GetTextProc GetTextUPP;
typedef LockProc LockUPP;
typedef LineCountProc LineCountUPP;
typedef CharacterCountProc CharacterCountUPP;
typedef LineFromPositionProc LineFromPositionUPP;
typedef LineToPositionProc LineToPositionUPP;
typedef LineEndProc LineEndUPP;
typedef LineRangeProc LineRangeUPP;
typedef LineOffsetProc LineOffsetUPP;
typedef NextVisiblePositionProc NextVisiblePositionUPP;
typedef GetTopLineNumProc GetTopLineNumUPP;
typedef SetTopLineNumProc SetTopLineNumUPP;
typedef GetLeadingProc GetLeadingUPP;
typedef IsWordBreakProc IsWordBreakUPP;
typedef WordSelectProc WordSelectUPP;
typedef ScanContentsProc ScanContentsUPP;
typedef NextScanCharacterProc NextScanCharacterUPP;
typedef PeekScanCharacterProc PeekScanCharacterUPP;
typedef DoneScanProc DoneScanUPP;
typedef NewDocumentProc NewDocumentUPP;
typedef OpenDocumentProc OpenDocumentUPP;
typedef ActivateProc ActivateUPP;
typedef GetFolderProc GetFolderUPP;
typedef GetFilesProc GetFilesUPP;
typedef GetProjectFilesProc GetProjectFilesUPP;
typedef GetFileTextProc GetFileTextUPP;
typedef GetDocumentSpecProc GetDocumentSpecUPP;
typedef GetDocumentModDateProc GetDocumentModDateUPP;
typedef FindTextProc FindTextUPP;
typedef FindMatchProc FindMatchUPP;
typedef IndexEntryProc IndexEntryUPP;
typedef DisplayDialogProc DisplayDialogUPP;
typedef StartProgressProc StartProgressUPP;
typedef DoProgressProc DoProgressUPP;
typedef DoneProgressProc DoneProgressUPP;
typedef NotifyUndoProc NotifyUndoUPP;
typedef GetPreferencesProc GetPreferencesUPP;
typedef SetPreferencesProc SetPreferencesUPP;
typedef ReportOSErrorProc ReportOSErrorUPP;
typedef TokenReturnProc TokenReturnUPP;
#define extGetSelection(callbacks, selAnchor, selEnd) \
(*((callbacks)->GetSelection))((selAnchor), (selEnd))
#define extSetSelection(callbacks, selAnchor, selEnd) \
(*(callbacks->SetSelection))((selAnchor), (selEnd))
#define extDisplaySelection(callbacks) \
(*(callbacks->DisplaySelection))()
#define extInsert(callbacks, text, length) \
(*(callbacks->Insert))((text), (length))
#define extDelete(callbacks) \
(*(callbacks->Delete))()
#define extCopy(callbacks) \
(*(callbacks->Copy))()
#define extPaste(callbacks, hdl) \
(*(callbacks->Paste))((hdl))
#define extPushClipboard(callbacks, hdl) \
(*(callbacks->PushClipboard))((hdl))
#define extGetText(callbacks, anchor, end, text, length) \
(*(callbacks->GetText))((anchor), (end), (text), (length))
#define extLock(callbacks, lock) \
(*(callbacks->Lock))((lock))
#define extLineCount(callbacks) \
(*(callbacks->LineCount))()
#define extCharacterCount(callbacks) \
(*(callbacks->CharacterCount))()
#define extLineFromPosition(callbacks, position) \
(*(callbacks->LineFromPosition))((position))
#define extLineToPosition(callbacks, line) \
(*(callbacks->LineToPosition))((line))
#define extLineEnd(callbacks, line) \
(*(callbacks->LineEnd))((line))
#define extLineRange(callbacks, line, start, end) \
(*(callbacks->LineRange))((line), (start), (end))
#define extLineOffset(callbacks, pos) \
(*(callbacks->LineOffset))((pos))
#define extNextVisiblePosition(callbacks, pos, next) \
(*(callbacks->NextVisiblePosition))((pos), (next))
#define extGetTopLineNum(callbacks) \
(*(callbacks->GetTopLineNum))()
#define extSetTopLineNum(callbacks, line) \
(*(callbacks->SetTopLineNum))((line))
#define extGetLeading(callbacks, line, length, tab, hardTab)\
(*(callbacks->GetLeading))((line), (length), (tab), (hardTab))
#define extIsWordBreak(callbacks, ch) \
(*(callbacks->IsWordBreak))((ch))
#define extWordSelect(callbacks, next, select, extend) \
(*(callbacks->WordSelect))((next), (select), (extend))
#define extScanContents(callbacks, pos) \
(*(callbacks->ScanContents))((pos))
#define extNextScanCharacter(callbacks, ch) \
(*(callbacks->NextScanCharacter))((ch))
#define extPeekScanCharacter(callbacks, ch) \
(*(callbacks->PeekScanCharacter))((ch))
#define extDoneScan(callbacks) \
(*(callbacks->DoneScan))()
#define extNewDocument(callbacks, type) \
(*(callbacks->NewDocument))(type)
#define extOpenDocument(callbacks, filesSpec) \
(*(callbacks->OpenDocument))(filesSpec)
#define extActivate(callbacks, doc) \
(*(callbacks->Activate))(doc)
#define extGetFolder(callbacks, folderSpec) \
(*(callbacks->GetFolder))(folderSpec)
#define extGetFiles(callbacks, specArray, count, sort) \
(*(callbacks->GetFiles))(specArray, count, sort)
#define extGetProjectFiles(callbacks, specArray, count, txt)\
(*(callbacks->GetProjectFiles))(specArray, count, txt)
#define extGetFileText(callbacks, fileSpec) \
(*(callbacks->GetFileText))(fileSpec)
#define extGetDocumentSpec(callbacks, window, fileSpec) \
(*(callbacks->GetDocumentSpec))(window, fileSpec)
#define extGetDocumentModDate(callbacks, window) \
(*(callbacks->GetDocumentModDate))(window)
#define extReportOSError(callbacks, code) \
(*(callbacks->ReportOSError))(code)
#define extFindText(callbacks, target, tlen, pos, result, resultLen, sens, pat) \
(*(callbacks->FindText))(target, tlen, pos, result, resultLen, sens, pat)
#define extFindMatch(callbacks, bracket, pos) \
(*(callbacks->FindMatch))(bracket, pos)
#define extIndexEntry(callbacks, name, minor, op) \
(*(callbacks->IndexEntry))(name, minor, op)
#define extDisplayDialog(callbacks, id, handler, data, itemHit) \
*itemHit = (*(callbacks->DisplayDialog))(id, handler, data)
#define extStartProgress(callbacks, text, total, can) \
(*(callbacks->StartProgress))(text, total, can)
#define extDoProgress(callbacks, thus) \
(*(callbacks->DoProgress))(thus)
#define extDoneProgress(callbacks) \
(*(callbacks->DoneProgress))()
#define extNotifyUndo(callbacks, name) \
(*(callbacks->NotifyUndo))(name)
#define extGetPreferences(callbacks, type, buffer, len) \
(*(callbacks->GetPreferences))(type, buffer, len)
#define extSetPreferences(callbacks, type, buffer, len) \
(*(callbacks->SetPreferences))(type, buffer, len)
#define extTokenReturn(callbacks, token) \
(*(callbacks->TokenReturn))(token)
#endif
#define extGetVersion(callbacks) ((callbacks)->version)
/*
* * ExternalCallbackBlock * * *
*
* This structure is private. Do not access any members
* directly.
*/
struct ExternalCallbackBlock {
long version;
void *target;
void *reader;
GetSelectionUPP GetSelection;
SetSelectionUPP SetSelection;
DisplaySelectionUPP DisplaySelection;
InsertUPP Insert;
DeleteUPP Delete;
CopyUPP Copy;
PasteUPP Paste;
PushClipboardUPP PushClipboard;
GetTextUPP GetText;
LockUPP Lock;
LineCountUPP LineCount;
CharacterCountUPP CharacterCount;
LineFromPositionUPP LineFromPosition;
LineToPositionUPP LineToPosition;
LineEndUPP LineEnd;
LineRangeUPP LineRange;
LineOffsetUPP LineOffset;
NextVisiblePositionUPP NextVisiblePosition;
GetTopLineNumUPP GetTopLineNum;
SetTopLineNumUPP SetTopLineNum;
GetLeadingUPP GetLeading;
IsWordBreakUPP IsWordBreak;
WordSelectUPP WordSelect;
NotifyUndoUPP NotifyUndo;
ScanContentsUPP ScanContents;
NextScanCharacterUPP NextScanCharacter;
PeekScanCharacterUPP PeekScanCharacter;
DoneScanUPP DoneScan;
NewDocumentUPP NewDocument;
OpenDocumentUPP OpenDocument;
ActivateUPP Activate;
GetFolderUPP GetFolder;
GetFilesUPP GetFiles;
GetProjectFilesUPP GetProjectFiles;
GetFileTextUPP GetFileText;
GetDocumentSpecUPP GetDocumentSpec;
GetDocumentModDateUPP GetDocumentModDate;
FindTextUPP FindText;
FindMatchUPP FindMatch;
IndexEntryUPP IndexEntry;
DisplayDialogUPP DisplayDialog;
StartProgressUPP StartProgress;
DoProgressUPP DoProgress;
DoneProgressUPP DoneProgress;
GetPreferencesUPP GetPreferences;
SetPreferencesUPP SetPreferences;
ReportOSErrorUPP ReportOSError;
TokenReturnUPP TokenReturn;
};
#endif